home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_dis.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  4KB  |  68 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. from test.test_support import verify, verbose, TestFailed, run_unittest
  5. import sys
  6. import dis
  7. import StringIO
  8. import unittest
  9.  
  10. def _f(a):
  11.     print a
  12.     return 1
  13.  
  14. dis_f = ' %-4d         0 LOAD_FAST                0 (a)\n              3 PRINT_ITEM\n              4 PRINT_NEWLINE\n\n %-4d         5 LOAD_CONST               1 (1)\n              8 RETURN_VALUE\n' % (_f.func_code.co_firstlineno + 1, _f.func_code.co_firstlineno + 2)
  15.  
  16. def bug708901():
  17.     for res in range(1, 10):
  18.         pass
  19.     
  20.  
  21. dis_bug708901 = ' %-4d         0 SETUP_LOOP              23 (to 26)\n              3 LOAD_GLOBAL              0 (range)\n              6 LOAD_CONST               1 (1)\n\n %-4d         9 LOAD_CONST               2 (10)\n             12 CALL_FUNCTION            2\n             15 GET_ITER\n        >>   16 FOR_ITER                 6 (to 25)\n             19 STORE_FAST               0 (res)\n\n %-4d        22 JUMP_ABSOLUTE           16\n        >>   25 POP_BLOCK\n        >>   26 LOAD_CONST               0 (None)\n             29 RETURN_VALUE\n' % (bug708901.func_code.co_firstlineno + 1, bug708901.func_code.co_firstlineno + 2, bug708901.func_code.co_firstlineno + 3)
  22.  
  23. class DisTests(unittest.TestCase):
  24.     
  25.     def do_disassembly_test(self, func, expected):
  26.         s = StringIO.StringIO()
  27.         save_stdout = sys.stdout
  28.         sys.stdout = s
  29.         dis.dis(func)
  30.         sys.stdout = save_stdout
  31.         got = s.getvalue()
  32.         lines = got.split('\n')
  33.         lines = [ line.rstrip() for line in lines ]
  34.         expected = expected.split('\n')
  35.         import difflib as difflib
  36.  
  37.     
  38.     def test_opmap(self):
  39.         self.assertEqual(dis.opmap['STOP_CODE'], 0)
  40.         self.assertEqual(dis.opmap['LOAD_CONST'] in dis.hasconst, True)
  41.         self.assertEqual(dis.opmap['STORE_NAME'] in dis.hasname, True)
  42.  
  43.     
  44.     def test_opname(self):
  45.         self.assertEqual(dis.opname[dis.opmap['LOAD_FAST']], 'LOAD_FAST')
  46.  
  47.     
  48.     def test_boundaries(self):
  49.         self.assertEqual(dis.opmap['EXTENDED_ARG'], dis.EXTENDED_ARG)
  50.         self.assertEqual(dis.opmap['STORE_NAME'], dis.HAVE_ARGUMENT)
  51.  
  52.     
  53.     def test_dis(self):
  54.         self.do_disassembly_test(_f, dis_f)
  55.  
  56.     
  57.     def test_bug_708901(self):
  58.         self.do_disassembly_test(bug708901, dis_bug708901)
  59.  
  60.  
  61.  
  62. def test_main():
  63.     run_unittest(DisTests)
  64.  
  65. if __name__ == '__main__':
  66.     test_main()
  67.  
  68.